package com.czt.mail.exception;

import lombok.Data;

/**
 * @author tangchao
 */
@Data
public class AjaxResult<T> {
    private String code;

    private String msg;

    private T data;

    public AjaxResult(String code) {
        this.code = code;
    }

    public AjaxResult() {
        code = "0";
        msg = "成功";
    }

    /**
     * 返回成功结果
     * @param msg 成功消息
     * @return r
     * @param <T> 结果(正确码为“0”,包含成功消息)
     */
    public static <T> AjaxResult<T> success(String msg) {
        AjaxResult<T> r = new AjaxResult<T>();
        r.msg = msg;
        r.code = "0";
        return r;
    }

    /**
     * 返回成功结果
     * @param object 返回的数据实体
     * @return r
     * @param <T> 结果(正确码为“0”,包含返回的数据)
     */
    public static <T> AjaxResult<T> success(T object) {
        AjaxResult<T> r = new AjaxResult<T>();
        r.data = object;
        r.code = "0";
        return r;
    }

    /**
     * 返回成功结果
     * @param msg 成功消息
     * @param object 返回的数据实体
     * @return r
     * @param <T> 结果(正确码为“0”,包含成功消息和返回的数据)
     */
    public static <T> AjaxResult<T> success(String msg, T object) {
        AjaxResult<T> r = new AjaxResult<T>();
        r.data = object;
        r.msg = msg;
        r.code = "0";
        return r;
    }


    /**
     * 返回失败结果
     * @param msg 错误提示
     * @param code 返回状态码
     * @return r
     * @param <T> 结果(错误码为"1",包含错误提示),错误码可以自定义
     */
    public static <T> AjaxResult<T> error(String code, String msg) {
        AjaxResult<T> r = new AjaxResult<>();
        r.msg = msg;
        r.code = code;
        return r;
    }

    /**
     * 返回失败结果
     * @param msg 错误提示
     * @param code 返回状态码
     * @param data 返回的opedId
     * @return r
     * @param <T> 结果(错误码为"1",包含错误提示),错误码可以自定义
     */
    public static <T> AjaxResult<T> error(String code, String msg, T data) {
        AjaxResult<T> r = new AjaxResult<>();
        r.msg = msg;
        r.code = code;
        r.data = data;
        return r;
    }

}
